package wu2020.top.spring.boot.flyway.simple.domain.model.person;

import com.wu.framework.response.Result;
import com.wu.framework.response.ResultFactory;
import org.springframework.beans.factory.annotation.Autowired;
import wu2020.top.spring.boot.flyway.simple.domain.model.person.Person;
import java.util.List;
import com.wu.framework.inner.lazy.database.expand.database.persistence.domain.LazyPage;
/**
 * describe person 
 *
 * @author Jia wei Wu
 * @date 2024/03/07 09:59 上午
 * @see com.wu.framework.inner.lazy.persistence.reverse.lazy.ddd.DefaultDDDLazyDomainRepository 
 **/

public interface PersonRepository {


    /**
     * describe 新增
     *
     * @param person 新增     
     * @return {@link  Result<Person>} 新增后领域对象     
     
     * @author Jia wei Wu
     * @date 2024/03/07 09:59 上午
     **/

    Result<Person> story(Person person);

    /**
     * describe 批量新增
     *
     * @param personList 批量新增     
     * @return {@link Result<List<Person>>} 新增后领域对象集合     
     
     * @author Jia wei Wu
     * @date 2024/03/07 09:59 上午
     **/

    Result<List<Person>> batchStory(List<Person> personList);

    /**
     * describe 查询单个
     *
     * @param person 查询单个     
     * @return {@link Result<Person>} DTO对象     
     
     * @author Jia wei Wu
     * @date 2024/03/07 09:59 上午
     **/

    Result<Person> findOne(Person person);

    /**
     * describe 查询多个
     *
     * @param person 查询多个     
     * @return {@link Result<List<Person>>} DTO对象     
     
     * @author Jia wei Wu
     * @date 2024/03/07 09:59 上午
     **/

    Result<List<Person>> findList(Person person);

    /**
     * describe 分页查询多个
     *
     * @param size 当前页数
     * @param current 当前页
     * @param person 分页查询多个     
     * @return {@link Result<LazyPage<Person>>} 分页领域对象     
     
     * @author Jia wei Wu
     * @date 2024/03/07 09:59 上午
     **/

    Result<LazyPage<Person>> findPage(int size,int current,Person person);

    /**
     * describe 删除
     *
     * @param person 删除     
     * @return {@link Result<Person>}      
     
     * @author Jia wei Wu
     * @date 2024/03/07 09:59 上午
     **/

    Result<Person> remove(Person person);

    /**
     * describe 是否存在
     *
     * @param person 是否存在     
     * @return {@link Result<Boolean>} 是否存在     
     
     * @author Jia wei Wu
     * @date 2024/03/07 09:59 上午
     **/

    Result<Boolean> exists(Person person);

}